<?php
/**
 *  日付選択コンポーネント
 *
 */
require_once dirname(__FILE__) . '/../Components.php';
require_once 'Request/DateTime.php';
require_once 'DateMath.php';

/**
 * 日付選択コンポーネントクラス
 * Enter description here ...
 * @author admin
 *
 */
class Components_DateSelect extends Components
{
	/** テンプレートファイル名 */
	const TEMPLATE_NAME = 'DateSelect.tpl';

	/** 既設定年 */
	protected $_iYear;
	/** 既設定月 */
	protected $_iMonth;
	/** 既設定月ゼロサプレス */
	protected $_sMonth;
	/** 日付計算クラス */
	protected $_objDateMath;
	/** 日付リクエストクラス */
	protected $_objRequestDateTime;
	/** 次月ＵＲＬ */
	protected $_sUrlNextMonth;
	/** 先月URL */
	protected $_sUrlLastMonth;

	/**
	 * コンストラクタ
	 * Enter description here ...
	 * @param unknown_type $sCompileId 中間ファイルＩＤ
	 */
	public function __construct($sCompileId)
	{
		$sTemplateDir = dirname(__FILE__);
		parent::__construct($sTemplateDir, $sCompileId);

		/** 日付リクエストクラス初期化 */
		$this->_objRequestDateTime = new Lib_Request_DateTime();

		/** 既設定年月確保 */
		$this->_YM();

		/** 日付計算クラス初期化 */
		$this->_objDateMath = new DateMath($this->_iYear.$this->_sMonth.'010000');

		/** 先月次月ＵＲＬ作成 */
		$this->_sUrlLastMonth = $this->_createUrlLastMonth();
		$this->_sUrlNextMonth = $this->_createUrlNextMonth();
	}

	public function fetch()
	{
		$this->view->urlBackMonth = $this->_sUrlLastMonth;
		$this->view->urlNextMonth = $this->_sUrlNextMonth;
		$this->view->DISP_MONTH = $this->_iMonth;
		$sHtml = parent::fetch(self::TEMPLATE_NAME);
		return $sHtml;
	}

	/**
	 * 既設定年月取得
	 * Enter description here ...
	 */
	protected function _YM()
	{
		$this->_iYear = $this->_objRequestDateTime->getYearFromYMD();
		$this->_iMonth = $this->_objRequestDateTime->getMonthFromYMD();
		$this->_sMonth = sprintf('%02d', $this->_iMonth);
	}

	/**
	 * 前月ＵＲＬ作成
	 */
	protected function _createUrlLastMonth()
	{
		$sYM = $this->_objDateMath->getYYYYMM_afterMonth(-1);
		$sResult
		= $this->_objRequestDateTime->replaceQueryString(
			array(Lib_Request_DateTime::KEY_YMD=>$sYM.'01')
		);
		return $sResult;
	}

	/**
	* 次月ＵＲＬ作成
	*/
	protected function _createUrlNextMonth()
	{
		$sYM = $this->_objDateMath->getYYYYMM_afterMonth(1);
		$sResult
		= $this->_objRequestDateTime->replaceQueryString(
		array(Lib_Request_DateTime::KEY_YMD=>$sYM.'01')
		);
		return $sResult;
	}

}